心理ネットワークを用いた
シミュレーション研究

計算論的臨床心理学サマースクール2025

専修大学大学院文学研究科心理学専攻修士課程2年
大水 拓海

2025-08-07

自己紹介

大水拓海(おおみず たくみ)

所属

専修大学大学院文学研究科心理学専攻修士課程2年

研究テーマ・関心

心理療法の作用機序,感情粒度,心理ネットワーク,
シミュレーション,能動的推論

個人HP

心理ネットワーク”シミュレーション”

なぜネットワークからシミュレーションを行うか?

  • 実際の臨床データを使用することの困難さ(入手,使用)

  • 侵襲性の問題を超えて介入を試す,予測する

  • 新たな仮説の生成

Cramer et al (2016)

ネットワークの結合を強めるパラメータ\(c\)の値が症状全体の活性化を左右する

\[A^{t}_{i} = \sum^{J}_{j=1} cW_{ij}X^{t-1}_j\tag{1}\]

\[P(X^{t}_{i} = 1) = \frac{1}{1+e^{b_{i}}-A^{t}_i} \tag{2}\]

Omizu & Kunisato(2025)

国内で初めて心理ネットワークのシミュレーション研究を行った論文(多分)

Omizu & Kunisato(2025)

  • Cramerのモデルでは症状のみの接続の強さに着目
    →心理療法などの治療的な要素を入れて拡張することで,ネットワークの中でどの症状を標的にすれば大きな治療効果が得られるかシミュレーションできる

Omizu & Kunisato(2025)

Omizu & Kunisato(2025)

psynetsim パッケージ

psynetsim パッケージ

  • ネットワークシミュレーションを実行する関数を
    パッケージにしてまとめました

  • ご自身のRコンソールに以下をコピペして,パッケージをダウンロードしてください

remotes::install_github("TakumiOmizu/psynetsim")
library(psynetsim)

psynetsim パッケージ

  • W_init

  • b_init

  • target

  • connectivity

  • edge_between_TC

  • weight_bias

psynetsim パッケージ

パッケージのサンプルコード

# Example data for a 6-symptom network
set.seed(456)
weight_6 <- matrix(rnorm(6*6, mean = 0.2, sd = 0.08), nrow = 6, ncol = 6)
diag(weight_6) <- 0
weight_6[upper.tri(weight_6)] <- t(weight_6)[upper.tri(weight_6)]
threshold_6 <- data.frame(threshold = rnorm(6, mean = 0.3, sd = 0.05))
target_list_6 <- list(symptom1 = 1, symptom2 = 0, symptom3 = 1,
                      symptom4 = 0, symptom5 = 0, symptom6 = 1)
custom_symptom_names_6 <- c("Anxiety", "Sadness", "Fatigue",
                            "Insomnia", "Irritability", "Pain")

psynetsim パッケージ

サンプルコードの実行!

# Run the simulation with custom parameters
sim_results <- simulate_treatment_network(
  W_init = weight_6,
  b_init = threshold_6$threshold,
  target = target_list_6,
  connectivity = 1.2,
  edge_between_TC = 0.8,
  weight_bias = 1.2,
  TB = 0.8,
  trial = 5, # Example: Overriding default 10
  baseline_iteration = 15, # Example: Overriding default 10
  num_TC = 1, # Example: Overriding default 5
  TC_iteration_per_component = 12, # Example: Overriding default 10
  follow_up_iteration = 15, # Example: Overriding default 10
  symptom_name = custom_symptom_names_6
)

psynetsim パッケージ

ネットワークシミュレーションを試してみよう!

先ほど推定したIsing modelの重みと閾値を使って,シミュレーション

  • 単独の症状を標的とした場合,どの症状への介入が最も効果的か?

  • 複数の症状を標的とした場合,どのような組み合わせが効果的か?

  • 症状を悪化させてしまう組み合わせはあるか?

  • その他,

ネットワークシミュレーションを試してみよう!

# 国里先生パートで推定したIsingのデータを使ってシミュレーションする
simulate_treatment_network()

ネットワークシミュレーションを試してみよう!